Obsidian-Digital-Garden CSS 样式优化

在本文中,分析 Obsidian-Digital-Gardendigitalgarden 模板工程内的 CSS 样式。了解这些样式,有助于我们进行更高级的样式定制、优化。

Obsidian-Digital-Garden 模板工程的样式文件,整体上还是比较复杂的。可总的分为两部分:

下面分别来看。


位于 src/site/styles 下存放样式,具体包括:

其中,obsidian-base.scssdigital-garden-base.scss 官方都不建议修改,因为 digitalgarden 在更新时会更新这两个样式,如果我们对其手动修改了,会导致冲突需要手动解决。custom-style.scss 是专门提供给用户,进行样式定制的。

整体上,obsidian-base.scss 打底、digital-garden-base.scss 网站适配、custom-style.scss 用户定制。


用户选择 Obsidian 主题样式

Obsidian-Digital-Garden 允许用户设置主题,并且跟 0.0 Obsidian 介绍 主题通用。

该主题在 0.0 Obsidian 介绍 内通过 Obsidian-Digital-Garden 插件进行设置,设置成功后会更改模板工程根目录的 .env 文件的 THEME 一项:

THEME=https://raw.githubusercontent.com/maxiee/obsidian-border/main/theme.css

设置的值为 Obsidian 主题对应的 CSS 文件。

Note

通过代码可以看出,我使用 Obsidian Border 主题,但是该主题的默认样式,在数字花园中展示不够完美,于是我又 Fork 了一份,进行了一些小调整。

从中也可以看出,尽管 Obsidian-Digital-Garden 主题跟 0.0 Obsidian 介绍 主题通用,但两者无法保证 100% 兼容。


样式复杂度

整体上,digitalgarden 的样式是非常复杂的。从几个样式文件的行数可看出:

加起来接近 2w 行 css,太多了!原因是:obsidian-base.scsstheme.css 都是整个 0.0 Obsidian 介绍 的样式,文章格式只是其中的一小部分。

作者的思路我能够理解,obsidian-base.scsstheme.css 都是别人交付的产物,我们直接复用,进行微调,最终通过优化器,剪掉用不到的样式,这样最终产物 CSS 还是小的,同时数字花园网站的样式设置,与 Obsidian 软件样式设置方法保持一致

从这一角度来说,我赞同作者,这是一个成本低,同时延续 Obsidian 习惯的好方法。

Note

但我还是对 obsidian-base.scss 下手了,删除数字花园中用不到的样式,目前压缩到 4.5k 行,还有很大的优化空间。这也意味着我与上游不一致,未来在升级时有很麻烦


digital-garden-base.scss

digital-garden-base.scss 是数字花园网站的结构样式,在本文中,对几个重要样式进行梳理。

这段 SCSS 代码定义了一个名为 .navbar 的 CSS 类,该类用于样式化一个导航栏。以下是每个属性的解释:

此外,这段代码还包含了一些媒体查询,这些媒体查询将在视口宽度小于特定值时应用不同的样式。例如,当视口宽度小于 1400px 时,导航栏的定位方式将变为固定定位;当视口宽度小于 800px 时,.navbar 的子元素 .search-text 将不显示。

.navbar-inner.search-button.search-text.navbar 的子元素,它们也有自己的样式定义。

这段 SCSS 代码定义了一个名为 .sidebar-container 的 CSS 类,该类用于样式化一个侧边栏容器。以下是每个属性的解释:

.toc-container

右侧边栏目录容器。

这段 SCSS 代码定义了一个名为 .toc-container 的 CSS 类,该类用于样式化一个表格的内容(Table of Contents)容器。以下是每个属性的解释:

此外,这段代码还包含了对 .toc-container 的子元素 ullia 的样式定义。例如,ul 元素的列表样式类型被设置为无,左侧内边距被设置为 15px,顶部和底部外边距被设置为 0;li 元素的顶部内边距被设置为 4px,还添加了一个伪元素 ::before,该伪元素的内容为 "# ",颜色和字体大小也有相应的设置;a 元素的文本装饰被设置为无,当鼠标悬停时,文本装饰被设置为下划线。


本文作者:Maeiee

本文链接:Obsidian-Digital-Garden CSS 样式优化

版权声明:如无特别声明,本文即为原创文章,版权归 Maeiee 所有,未经允许不得转载!


喜欢我文章的朋友请随缘打赏,鼓励我创作更多更好的作品!